用VC做视频播放器.docx | 您所在的位置:网站首页 › video2x 照片 › 用VC做视频播放器.docx |
用VC做视频播放器.docx 《用VC做视频播放器.docx》由会员分享,可在线阅读,更多相关《用VC做视频播放器.docx(11页珍藏版)》请在冰豆网上搜索。 用VC做视频播放器 用VC做视频播放器 1利用VC6.0的MFCAppWizard创建工程 首先: 注册该控件在windows“运行”里写入: regsvr32msdrm.ocx单击确定
1.在VC++集成开发环境中,选择菜单File|New,弹出New对话框。 2.在Projects选项卡中选择MFCAppWizard(exe),并在Location项中输入“D: \Samples”。 3.在Projectname中输入“CTLY2412”,项中的内容自动设置为“D: \Samples\Player”。 4.按下OK按钮,在弹出的MFCAppWizard-Step-1对话框中选择Dialogbased项,生成基于对话框的应用程序。 5.按下Finish按钮,在弹出的对话框中按下OK按钮,等待创建完相应的工程。
6.2.2为对话框添加菜单
1.在工作区中单击ResourceView选项卡,展开Dialog资源组,双击IDD_PLAYER_DIALOG。 在右边的工作台中显示可以进行可视化编辑的IDD_PLAYER_DIALOG对话框,并打开一个控件工具窗口。 删除AppWizard在对话框中生成的控件,即一个OK按钮、一个Cancel按钮和一个文本框。 2.鼠标右击Dialog资源组中的IDD_PLAYER_DIALOG条目,在弹出的菜单中选择Insert…选项。 这时,显示InsertResource(增加资源)窗口,选择其中的Menu项,单击右边的New按钮。 这样,VC++6.0在资源文件Player.rc中增加了一项资源,即一个菜单。 3.双击ID号: IDR_MENU1,则在右边显示一个可编辑的菜单条,该菜单条的最右边是一个虚方框,表示最右边的一个菜单项。 4.双击虚方框,弹出MenuItemProperties(菜单项属性)对话框,在“C编辑”框中输入菜单标题: 文件(&F),其中“&”的作用是使其后面的字符加上下划线,让用户可用键盘来选择菜单。 另外,“O弹出”检查框默认选中,表明新加的菜单可以有其弹出的子菜单。 5.在“文件”菜单下有一个虚方框,表示要新建的菜单项。 在“C标题”编辑框中输入: 打开(&O),在ID编辑框中输入: ID_FILEOPEN(当“O弹出”检查框未选中时,必须输入ID)。 另外,可根据需要在“M提示”编辑框中输入一串字符,提示该菜单选项功能。 当光标停在该菜单选项上时,提示字符串显示在应用程序主窗口的状态条中。 6.类似步骤5)、6),按下表6-1内容,建立完整的菜单。 表6-1媒体播放器的各菜单项属性 顶层菜单项 子菜单项 ID号
文件(&F) 打开(&O) ID_FILEOPEN 关闭(&C) ID_FILECLOSE 具有Separator样式的菜单分隔条
退出(&X) ID_FILEEXIT
播放(&P) 开始(&S) ID_PLAYSTART 暂停(&P) ID_PLAYPAUSE 停止(&T) ID_PLAYSTOP 视频(&V) 原始大小(&O) ID_VIDEO1X 原始大小的2倍(&D) ID_VIDEO2X 音频(&A) 调节音量(&V) ID_AUDEOVOLUME 调节左右声道平衡(&B) ID_AUDEOBALANCE 帮助(&H) 关于播放器(&A) ID_HELPABOUT
7.给新建的菜单连接一个类 ①将鼠标移至编辑状态的菜单上,单击右键,弹出快捷菜单,选择ClassWizard命令。 在显示ClassWizard窗口的同时,弹出一个AddingaClass对话框,该对话框询问是增加一个新类,还是选择一个已经存在的类进行连接。 因为我们要连接的类是与Player应用程序相关联的对话框类CPlayerDlg,此类已经存在,所以选择第二项。 ②单击AddingaClass对话框中的OK按钮,显示一个SelectClass(选择类)对话框窗口,在Classlist列表中选择CPlayerDlg,单击Select按钮,确定所选项。
③单击“确定”按钮,关闭ClassWizard窗口。 现在,菜单ID_PLAYER_MENU已经和CPlayerDlg类连接起来了。 8.连接菜单和应用程序的主窗口 ①在工作区中单击ResourceView选项卡,展开Dialog资源组,双击IDD_PLAYER_DIALOG。 在右边工作台中显示的IDD_PLAYER_DIALOG对话框的任何一个空白区域,单击鼠标右键,在弹出的菜单中选择Properties项,随后弹出DialogProperties对话框。 ②在DialogProperties对话框中有一个“M菜单”选项。 单击“M菜单”组合框的箭头,在弹出的列表中选择IDR_MENU 9.选择File|Save命令,保存所有工作。 现在,对已存在的程序进行编译、运行 6.2.3在对话框中添加ActiveMovie控件
在对话框中单击鼠标右键,选择InsertActiveXControl命令。 在弹出的对话框中选择ActiveMovieControlObject,并按“确定”按钮。 10.为新添加的ActiveMovie控件确定ID号,为IDC_AMOVIE。 11.为IDC_AMOVIE映射一个成员变量 在ActiveMovie控件上单击右键,在弹出菜单中选择ClassWizard,在弹出的MFCClassWizard对话框中选择MemberVariables选项卡,按下AddVariable按钮,弹出对话框。 在随后弹出对话框中,按下“OK”按钮,以确定新建类: CActiveMovie。 在弹出的AddMemberVariable对话框中确定与IDC_AMOVIE相映射的成员变量: m_AMovie。 6.2.4完成“文件”菜单的各子菜单功能 以下的函数基本上是通过MFC的消息映射机制实现
12.实现“打开”菜单功能 ①为“打开”菜单添加消息响应函数: OnFileopen()。 ②OnFileopen()函数的代码如下: voidCTLY2412Dlg: : OnFileopen() { //TODO: Addyourcommandhandlercodehere //文件类型过滤 charszFileFilter[]= "Mp3File(*.mp3)|*.mp3|" "WmaFile(*.wma)|*.wma|" "VideoFile(*.dat)|*.dat|" "WaveFile(*.wav)|*.wav|" "AVIFile(*.avi)|*.avi|" "MovieFile(*.mov)|*.mov|" "MediaFile(*.mmm)|*.mmm|" "MidFile(*.mid;*,rmi)|*.mid;*.rmi|" "MPEGFile(*.mpeg)|*.mpeg|" "AllFile(*.*)|*.*||"; CTLY2412Dlgdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter); if(dlg.DoModal()==IDOK) { CStringPathName=dlg.GetPathName(); PathName.MakeUpper(); m_AMovie.SetFileName(PathName); } }
13.实现“关闭”菜单功能 ①为“关闭”菜单添加消息响应函数: OnFileclose()。 ②OnFileclose()函数的代码如下: voidCTLY2412Dlg: : OnFileclose() { //TODO: Addyourcommandhandlercodehere m_AMovie.SetFileName(""); } 14.实现“退出”菜单功能 ①为“退出”菜单添加消息响应函数: OnFileexit()。 ②OnFileexit()函数的代码如下: voidCTLY2412Dlg: : OnFileexit() { //TODO: Addyourcommandhandlercodehere OnCancel(); }
6.2.5完成“播放”菜单的各子菜单功能
1.实现“开始”菜单功能 ①为“开始”菜单添加消息响应函数: OnPlaystart()。 ②OnPlaystart()函数的代码如下: voidCTLY2412Dlg: : OnPlaystart() { //TODO: Addyourcommandhandlercodehere m_AMovie.Run(); SetTimer(0,20,NULL);//设置定时器 } 2.实现“暂停”菜单功能 ①为“暂停”菜单添加消息响应函数: OnPlaypause()。 ②OnPlaypause()函数的代码如下: voidCTLY2412Dlg: : OnPlaypause() { //TODO: Addyourcommandhandlercodehere m_AMovie.Pause(); } 3.实现“停止”菜单功能 ①为“停止”菜单添加消息响应函数: OnPlaystop()。 ②OnPlaystop()函数的代码如下: voidCTLY2412Dlg: : OnPlaystop() { //TODO: Addyourcommandhandlercodehere m_AMovie.Stop(); KillTimer(0);//关掉定时器 } 4.当ActiveMovie控件完成媒体文件的加载时自动播放该文件,代码如下: voidCTLY2412Dlg: : OnOpenCompleteAmovie() { m_AMovie.Run(); }
6.2.6完成“视频”菜单的各子菜单功能
1.实现“原始大小”菜单功能 15.编写代码完善OnInitDialog(),完整代码如下: BOOLCTLY2412Dlg: : OnInitDialog() { CDialog: : OnInitDialog(); SetIcon(m_hIcon,TRUE); SetIcon(m_hIcon,FALSE); //设置ActiveMovie控件的初始文件为空 m_AMovie.SetFileName(""); //改变窗口的大小以适应ActiveMovie控件的大小 MoveMovieWindow(); returnTRUE; }
16.添加CTLY2412Dlg类的成员函数MoveMovieWindow(),实现改变对话框大小以适应ActiveMovie控件的大小,其代码如下: voidCTLY2412Dlg: : MoveMovieWindow() { CRectrc1,rc2,rc3; //得到ActiveMovie控件的大小 m_AMovie.GetWindowRect(rc1); //保证对话框客户区的宽不小于300像素,高不小于225像素 if(rc1.Width() { rc1.right=rc1.left+300; rc1.bottom=rc1.top+225; } //获得对话框的大小 GetWindowRect(rc2); |
CopyRight 2018-2019 实验室设备网 版权所有 |